package com.aos.erp.common.lock;

import java.lang.annotation.*;

/**
 * 锁的注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface AxLock {

    /**
     * redis 锁key的前缀
     *
     * @return redis 锁key的前缀
     */
    String prefix() default "";

    /**
     * 过期时间毫秒,默认5000毫秒
     *
     * @return
     */
    int expire() default 5000;


    /**
     * 尝试加锁操作的过期时间。单位内如果没抢到锁不再抢锁
     *
     * @return 毫秒
     */
    int timeout() default 2000;

    /**
     * 尝试单元间隔，默认20毫秒，20毫秒尝试加一次锁
     *
     * @return 毫秒
     */
    int unit() default 20;

    /**
     * <p>Key的分隔符（默认 :）</p>
     * <p>生成的Key：N:SO1008:500</p>
     *
     * @return String
     */
    String delimiter() default ":";
}
